package com.iwhalecloud.dict.util;

import com.iwhalecloud.dict.bean.ExcelInfoBeResult;
import com.iwhalecloud.dict.bean.ExcelInfor;
import com.iwhalecloud.dict.bean.ExcelInfoBeResult;
import com.iwhalecloud.dict.bean.ExcelInfor;
import com.iwhalecloud.dict.bean.TempAmount;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;

public class OperExcelSheet {
    public List<ExcelInfor> readDetailDataFromSheet2List(XSSFSheet sheet1, int startRow, int endRow, int dataType ){
        List<ExcelInfor> list = new ArrayList<ExcelInfor>();
        for(int i=startRow;i<endRow;i++){
            ExcelInfor excelInfor = new ExcelInfor();
            XSSFRow xssfRow=sheet1.getRow(i);

            //以此获得该行的所有单元格
            excelInfor.setIndexType(xssfRow.getCell(0).toString());
            excelInfor.setIndex(xssfRow.getCell(1).toString());
            excelInfor.setTaxRate(xssfRow.getCell(2).getRawValue());
            //System.out.println(xssfRow.getCell(3).getCellType());
            if(xssfRow.getCell(3).getCellType()== CellType.NUMERIC||xssfRow.getCell(3).getCellType()==CellType.FORMULA){
                excelInfor.setAmount(Double.valueOf(xssfRow.getCell(3).getRawValue()));
            }
            if(xssfRow.getCell(4).getCellType()== CellType.NUMERIC||xssfRow.getCell(4).getCellType()==CellType.FORMULA){
                excelInfor.setYear1Amount(Double.valueOf(xssfRow.getCell(4).getRawValue()));
            }
            if(xssfRow.getCell(5).getCellType()== CellType.NUMERIC||xssfRow.getCell(5).getCellType()==CellType.FORMULA){
                excelInfor.setYear2Amount(Double.valueOf(xssfRow.getCell(5).getRawValue()));
            }
            if(xssfRow.getCell(6).getCellType()== CellType.NUMERIC||xssfRow.getCell(6).getCellType()==CellType.FORMULA){
                excelInfor.setYear3Amount(Double.valueOf(xssfRow.getCell(6).getRawValue()));
            }
            if(xssfRow.getCell(7).getCellType()== CellType.NUMERIC||xssfRow.getCell(7).getCellType()==CellType.FORMULA){
                excelInfor.setYear4Amount(Double.valueOf(xssfRow.getCell(7).getRawValue()));
            }
            if(xssfRow.getCell(8).getCellType()== CellType.NUMERIC||xssfRow.getCell(8).getCellType()==CellType.FORMULA){
                excelInfor.setYear5Amount(Double.valueOf(xssfRow.getCell(8).getRawValue()));
            }
            if(xssfRow.getCell(9).getCellType()== CellType.NUMERIC||xssfRow.getCell(9).getCellType()==CellType.FORMULA){
                excelInfor.setYear6Amount(Double.valueOf(xssfRow.getCell(9).getRawValue()));
            }
            if(xssfRow.getCell(10).getCellType()== CellType.NUMERIC||xssfRow.getCell(10).getCellType()==CellType.FORMULA){
                excelInfor.setYear7Amount(Double.valueOf(xssfRow.getCell(10).getRawValue()));
            }
            if(xssfRow.getCell(11).getCellType()== CellType.NUMERIC||xssfRow.getCell(11).getCellType()==CellType.FORMULA){
                excelInfor.setYear8Amount(Double.valueOf(xssfRow.getCell(11).getRawValue()));
            }
            if(xssfRow.getCell(12).getCellType()== CellType.NUMERIC||xssfRow.getCell(12).getCellType()==CellType.FORMULA){
                excelInfor.setYear9Amount(Double.valueOf(xssfRow.getCell(12).getRawValue()));
            }
            if(xssfRow.getCell(13).getCellType()== CellType.NUMERIC||xssfRow.getCell(13).getCellType()==CellType.FORMULA){
                excelInfor.setYear10Amount(Double.valueOf(xssfRow.getCell(13).getRawValue()));
            }
            if(xssfRow.getCell(14).getCellType()== CellType.NUMERIC||xssfRow.getCell(14).getCellType()==CellType.FORMULA){
                excelInfor.setYear11Amount(Double.valueOf(xssfRow.getCell(14).getRawValue()));
            }
            if(xssfRow.getCell(15).getCellType()== CellType.NUMERIC||xssfRow.getCell(15).getCellType()==CellType.FORMULA){
                excelInfor.setPrice(Double.valueOf(xssfRow.getCell(15).getRawValue()));
            }
            if(xssfRow.getCell(16).getCellType()== CellType.NUMERIC||xssfRow.getCell(16).getCellType()==CellType.FORMULA){
                excelInfor.setYear1Price(Double.valueOf(xssfRow.getCell(16).getRawValue()));
            }
            if(xssfRow.getCell(17).getCellType()== CellType.NUMERIC||xssfRow.getCell(17).getCellType()==CellType.FORMULA){
                excelInfor.setYear2Price(Double.valueOf(xssfRow.getCell(17).getRawValue()));
            }
            if(xssfRow.getCell(18).getCellType()== CellType.NUMERIC||xssfRow.getCell(18).getCellType()==CellType.FORMULA){
                excelInfor.setYear3Price(Double.valueOf(xssfRow.getCell(18).getRawValue()));
            }
            if(xssfRow.getCell(19).getCellType()== CellType.NUMERIC||xssfRow.getCell(19).getCellType()==CellType.FORMULA){
                excelInfor.setYear4Price(Double.valueOf(xssfRow.getCell(19).getRawValue()));
            }
            if(xssfRow.getCell(20).getCellType()== CellType.NUMERIC||xssfRow.getCell(20).getCellType()==CellType.FORMULA){
                excelInfor.setYear5Price(Double.valueOf(xssfRow.getCell(20).getRawValue()));
            }
            if(xssfRow.getCell(21).getCellType()== CellType.NUMERIC||xssfRow.getCell(21).getCellType()==CellType.FORMULA){
                excelInfor.setYear6Price(Double.valueOf(xssfRow.getCell(21).getRawValue()));
            }
            if(xssfRow.getCell(22).getCellType()== CellType.NUMERIC||xssfRow.getCell(22).getCellType()==CellType.FORMULA){
                excelInfor.setYear7Price(Double.valueOf(xssfRow.getCell(22).getRawValue()));
            }
            if(xssfRow.getCell(23).getCellType()== CellType.NUMERIC||xssfRow.getCell(23).getCellType()==CellType.FORMULA){
                excelInfor.setYear8Price(Double.valueOf(xssfRow.getCell(23).getRawValue()));
            }
            if(xssfRow.getCell(24).getCellType()== CellType.NUMERIC||xssfRow.getCell(24).getCellType()==CellType.FORMULA){
                excelInfor.setYear9Price(Double.valueOf(xssfRow.getCell(24).getRawValue()));
            }
            if(xssfRow.getCell(25).getCellType()== CellType.NUMERIC||xssfRow.getCell(25).getCellType()==CellType.FORMULA){
                excelInfor.setYear10Price(Double.valueOf(xssfRow.getCell(25).getRawValue()));
            }
            if(xssfRow.getCell(26).getCellType()== CellType.NUMERIC||xssfRow.getCell(26).getCellType()==CellType.FORMULA){
                excelInfor.setYear11Price(Double.valueOf(xssfRow.getCell(26).getRawValue()));
            }

            excelInfor.setComments(xssfRow.getCell(27).getStringCellValue());
            excelInfor.setDatatype(dataType);
            excelInfor.setIndexId(i+1);
            //将实体类插入数据库
            list.add(excelInfor);
        }
        return list;
    }
    public List<ExcelInfoBeResult> readResultDataFromSheet2List(XSSFSheet sheet1, int startRow, int endRow , int dataType){
        List<ExcelInfoBeResult> list2 = new ArrayList<ExcelInfoBeResult>();
        for(int i=startRow;i<endRow;i++){
            ExcelInfoBeResult excelInfor2 = new ExcelInfoBeResult();
            XSSFRow xssfRow=sheet1.getRow(i);

            //以此获得该行的所有单元格
            excelInfor2.setIndexType(xssfRow.getCell(0).toString());
            excelInfor2.setIndex(xssfRow.getCell(1).toString());
            excelInfor2.setIndexValue1(xssfRow.getCell(2).getRawValue());
            excelInfor2.setIndexValue2(xssfRow.getCell(15).getRawValue());
            excelInfor2.setComments(xssfRow.getCell(27).toString());
            excelInfor2.setDataType(dataType);
            excelInfor2.setIndexId(i+1);
            //将实体类插入数据库
            list2.add(excelInfor2);
        }
        return list2;
    }
    public XSSFSheet updateSheetFromList(List<TempAmount> list, XSSFSheet sheet,int startCol){
        for(TempAmount temp:list){
            int startRow=temp.getIndexId()-1;
            Row row = sheet.getRow(startRow);
            row.getCell(startCol+0).setCellValue(temp.getYear1Amount());
            row.getCell(startCol+1).setCellValue(temp.getYear2Amount());
            row.getCell(startCol+2).setCellValue(temp.getYear3Amount());
            row.getCell(startCol+3).setCellValue(temp.getYear4Amount());
            row.getCell(startCol+4).setCellValue(temp.getYear5Amount());
            row.getCell(startCol+5).setCellValue(temp.getYear6Amount());
            row.getCell(startCol+6).setCellValue(temp.getYear7Amount());
            row.getCell(startCol+7).setCellValue(temp.getYear8Amount());
            row.getCell(startCol+8).setCellValue(temp.getYear9Amount());
            row.getCell(startCol+9).setCellValue(temp.getYear10Amount());
        }
        return sheet;
    }

    public void copyFileUsingJava7Files(File source, File dest) throws IOException {
        Files.copy(source.toPath(), dest.toPath());
    }
}
